package org.abratuhi.kvngroupware.pubsub;

public class IntegerValue implements Value<Integer>{
	
	Integer v;
	
	public IntegerValue(Integer value){
		this.v = value;
	}

	@Override
	public Value<Integer> add(Value<Integer> anotherValue) {
		return new IntegerValue(this.getValue() + anotherValue.getValue());
	}

	@Override
	public int compareTo(Value<Integer> anotherValue) {
		return (this.getValue()<anotherValue.getValue())? -1 : (this.getValue()>anotherValue.getValue())? 1 : 0;
	}

	@Override
	public Value<Integer> divide(Integer c) {
		return new IntegerValue(this.getValue() / c);
	}

	@Override
	public Value<Integer> divide(Value<Integer> anotherValue) {
		return new IntegerValue(this.getValue() / anotherValue.getValue());
	}

	@Override
	public Value<Integer> getMaxValue() {
		//return new IntegerValue(Integer.MAX_VALUE/10);
		return new IntegerValue(100);
	}

	@Override
	public Value<Integer> getMeanTo(Value<Integer> anotherValue) {
		return new IntegerValue((this.getValue() + anotherValue.getValue()) / 2);
	}

	@Override
	public Value<Integer> getMinValue() {
		//return new IntegerValue(Integer.MIN_VALUE/10);
		return new IntegerValue(0);
	}

	@Override
	public Integer getValue() {
		return this.v;
	}

	@Override
	public Value<Integer> multiply(Integer c) {
		return new IntegerValue(this.getValue() * c);
	}

	@Override
	public Value<Integer> multiply(Value<Integer> anotherValue) {
		return new IntegerValue(this.getValue() * anotherValue.getValue());
	}

	@Override
	public Value<Integer> substract(Value<Integer> anotherValue) {
		return new IntegerValue(this.getValue() - anotherValue.getValue());
	}
	
	public String toString(){
		return getValue().toString();
	}

}
